<?php
/**
* Скрипт обработки фото
* Обрабатывает фото
*
* @author AlexFlitcher
* @license GNU General Public License
* @link https://notabug.org/alexflitcher/webprotection
*/

// устанавливаем время выполнения скрипта
set_time_limit(0);

// если переменная count существует...
if (@$_POST['count']) {
    // ... то выполняем цикл, скачивания фотографий
    for ($i = 0; $i < htmlentities($_POST['count']); $i++) {
        $ch = curl_init('https://thispersondoesnotexist.com/image');
        $fp = fopen("img/{$i}.jpeg", 'wb');
        curl_setopt($ch, CURLOPT_FILE, $fp);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_exec($ch);
        curl_close($ch);
        fclose($fp);
        sleep(1);
    }
     
    // начало форматирования фото
    echo "Начинаем";
    passthru('./protection-v0.3 -d ./img');

    // создаём архив с фото
    $phar = new PharData('cloaked.zip');
    $phar->startBuffering();
    $phar->buildFromDirectory('./img');
    $phar->stopBuffering();
    file_force_download('cloaked.zip');
}

// отправка файла на закачку
function file_force_download($file) 
{
    if (file_exists($file)) {
        // сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт
        // если этого не сделать файл будет читаться в память полностью!
        if (ob_get_level()) {
            ob_end_clean();
        }
        
        // заставляем браузер показать окно сохранения файла
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename=' . basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        
        // читаем файл и отправляем его пользователю
        readfile($file);
        exit;
    }
}

?>

<!DOCTYPE>
<html>
  <head>
    <meta charset="utf8">
    <title>Генератор фото</title>
  </head>
  <body>
    <form method="post">
    Введите количество фото: <input type="number" name="count">
    <input type="submit">
    </form>
  </body>
</html>
